package com.bkhech.satoken.controller;

import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.util.SaResult;
import com.bkhech.satoken.service.AnnotationCheckService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 注解鉴权
 *
 * @author guowm
 * @date 2023/8/3
 */
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("user/check")
public class AnnotationCheckController {

    final AnnotationCheckService annotationCheckService;

    /**
     * 1.登录校验：只有登录之后才能进入该方法
     * @SaCheckLogin
     * 2.角色校验：必须具有指定角色才能进入该方法
     * @SaCheckRole("super-admin")
     * 3.权限校验：必须具有指定权限才能进入该方法
     * @SaCheckPermission("user.add")
     * 4.忽略校验，可以游客访问
     * @SaIgnore
     */
    @SaCheckLogin
    @RequestMapping("info")
    public SaResult info() {
        return SaResult.ok("查询用户信息");
    }

    // 角色校验：必须具有指定角色才能进入该方法
    @SaCheckRole("super-admin")
    @RequestMapping("add")
    public SaResult addInterceptor() {
        return SaResult.ok("用户增加");
    }

    @RequestMapping("add-interceptor")
    public SaResult addAop() {
        return annotationCheckService.add();
    }

    /**
     * 注意点：
     * @SaCheckSafe()
     * @SaCheckBasic()
     * @SaCheckDisable()
     */

}
